package com.tonghe.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.tonghe.domain.ResponseResult;
import com.tonghe.domain.dto.ArticleDto;
import com.tonghe.domain.dto.QueryArticleDTO;
import com.tonghe.domain.entity.Article;
import com.tonghe.vo.sys.AddArticleDto;
import com.tonghe.vo.sys.ArticleVo;
import org.springframework.stereotype.Service;

/**
 * @Date:2022/2/14- 02- 14- 19:34
 * @author: tonghe
 **/

@Service
public interface ArticleService extends IService<Article> {

    /** 查询热门文章 */
    ResponseResult hotArticleList();

    /**
     * 按照分类id 查询文章
     *
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @param categoryId 分类id号
     * @return 结果
     */
    ResponseResult articleList(Integer pageNum, Integer pageSize, Long categoryId);

    /**
     * 按照分类id 查询文章
     *
     * @param pageNum 页号
     * @param pageSize 每页大小
     * @param queryArticleDTO 查询实体
     * @return 结果
     */
    ResponseResult articleList(Integer pageNum, Integer pageSize, QueryArticleDTO queryArticleDTO);

    /**
     * 查询文章详情
     *
     * @param id 所查询的文章的 id 号
     * @return 结果
     */
    ResponseResult getArticleDetail(long id);

    /**
     * 更改文章浏览量
     *
     * @param id 需要更新浏览量 文章的 id 号
     * @return 结果
     */
    ResponseResult updateViewCount(Long id);

    /**
     * 添加文章
     *
     * @param article 新增文章数据传输实体
     * @return 结果
     */
    ResponseResult add(AddArticleDto article);

    /**
     * 获取文章详情
     *
     * @param id 文章id
     * @return 结果
     */
    ArticleVo getInfo(Long id);

    /**
     * 编辑文章
     *
     * @param article 编辑文章数据传输实体
     * @return 结果
     */
    void edit(ArticleDto article);

}
